#pragma once

class wxHtmlAnchorCell : public wxHtmlCell
{
private:
    wxString m_AnchorName;

public:
    wxHtmlAnchorCell(const wxString& name) : wxHtmlCell()
        { m_AnchorName = name; }
    void Draw(wxDC& WXUNUSED(dc),
              int WXUNUSED(x), int WXUNUSED(y),
              int WXUNUSED(view_y1), int WXUNUSED(view_y2),
              wxHtmlRenderingInfo& WXUNUSED(info)) {}

    virtual const wxHtmlCell* Find(int condition, const void* param) const
    {
        if ((condition == wxHTML_COND_ISANCHOR) &&
            (m_AnchorName == (*((const wxString*)param))))
        {
            return this;
        }
        else
        {
            return wxHtmlCell::Find(condition, param);
        }
    }

    DECLARE_NO_COPY_CLASS(wxHtmlAnchorCell)
};


// modified from [wxdir]/src/html/m_links.cpp
class wxHTML_Handler_DICT : public wxHtmlWinTagHandler {                                                                     \
    public:
        wxString GetSupportedTags() {
        	return _T("DICT_DUMY");
       	}

    public:
    	wxHTML_Handler_DICT() : wxHtmlWinTagHandler() {
        }

    public:
        bool HandleTag(const wxHtmlTag& tag) 
        {
            if (tag.HasParam( wxT("NAME") ))
            {
                m_WParser->GetContainer()->InsertCell(new wxHtmlAnchorCell(tag.GetParam( wxT("NAME") )));
            }

            if (tag.HasParam( wxT("HREF") ))
            {
                wxHtmlLinkInfo oldlnk = m_WParser->GetLink();
                wxColour oldclr = m_WParser->GetActualColor();
                int oldund = m_WParser->GetFontUnderlined();
                wxString name(tag.GetParam( wxT("HREF") )), target;
                
                if (tag.HasParam( wxT("TARGET") )) target = tag.GetParam( wxT("TARGET") );
                m_WParser->SetActualColor(m_WParser->GetLinkColor());
                m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(m_WParser->GetLinkColor()));
                m_WParser->SetFontUnderlined(false);
                m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
                m_WParser->SetLink(wxHtmlLinkInfo(name, target));
                
                ParseInner(tag);
                
                m_WParser->SetLink(oldlnk);
                m_WParser->SetFontUnderlined(oldund);
                m_WParser->GetContainer()->InsertCell(new wxHtmlFontCell(m_WParser->CreateCurrentFont()));
                m_WParser->SetActualColor(oldclr);
                m_WParser->GetContainer()->InsertCell(new wxHtmlColourCell(oldclr));

                return true;
            }
            else return false;
        }

};
